package com.example.weatherreport.city_manager;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;


import com.example.weatherreport.R;

import java.util.List;

public class DeleteCityAdapter extends BaseAdapter{

    Context context;
    List<String> mDatas;    //传入数据源
    List<String>deleteCitys;    //用来存储用户已删除的城市

    public DeleteCityAdapter(Context context, List<String> mDatas,List<String>deleteCitys) {
        // 适配器的构造函数 传参mDatas原来的城市，deleteCitys删除的城市
        this.context = context;
        this.mDatas = mDatas;
        this.deleteCitys = deleteCitys;
    }

    @Override
    public int getCount() {
        return mDatas.size();   //返回集数据源长度
    }

    @Override
    public Object getItem(int position) {
        return mDatas.get(position);    //返回指定位置的数据
    }

    @Override
    public long getItemId(int position) {
        return position;    //返回位置id
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) { //为每个列表项创建一个视图
        ViewHolder holder = null;   //声明一个ViewHolder对象，用来存储视图控件的引用
        if (convertView == null) {  //如果没有能复用的视图对象，则创建一个新的视图
            // 通过视图管理器LayoutInflater将指定布局生成
            convertView = LayoutInflater.from(context).inflate(R.layout.item_deletecity,null);
            // 创建新的ViewHolder对象并初始化
            holder = new ViewHolder(convertView);
            // 将ViewHolder对象设置为视图的标签，以便后续使用
            convertView.setTag(holder);
        }else{  // 如果视图对象不为空，则重用视图，从视图的标签中获取ViewHolder对象
            holder = (ViewHolder) convertView.getTag();
        }
        // 获取当前位置的城市名称，设置到TextView控件中
        final String city = mDatas.get(position);
        holder.tv.setText(city);

        // 为ImageView设置点击事件，当点击时删除城市并更新适配器数据
        holder.iv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mDatas.remove(city);
                deleteCitys.add(city);  // 将城市添加到已删除的城市列表中
                notifyDataSetChanged();  // 删除了提示适配器更新
            }
        });
        return convertView;
    }

    class ViewHolder{
        //声明控件
        TextView tv;
        ImageView iv;
        public ViewHolder(View itemView){   // 定义ViewHolder类的构造函数
            // 从传入视图对象中获取id为item_delete_tv的TextView控件引用，并赋值给tv
            tv = itemView.findViewById(R.id.item_delete_tv);
            iv = itemView.findViewById(R.id.item_delete_iv);
        }
    }
}
